package org.gp.Interfaz;

import javax.swing.JDialog;
import javax.swing.JButton;
import java.awt.EventQueue;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Iterator;

import javax.swing.JSpinner;
import javax.swing.SpinnerNumberModel;
import javax.swing.JComboBox;
import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;

import org.gp.tringes.GestorIGClasificacion;
import org.gp.tringes.GestorIGInicio;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;


public class IGClasificacion extends JDialog {
	
	private JButton btnClasifTotal;
	private JSpinner spnElectorAnyo1;
	private JButton btnClasifAnual;
	private JSpinner spnElectorAnyo2;
	private JComboBox comboCampeonatos;
	private JComboBox comboCarreras;
	private JButton btnClasifCarrera;
	
	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					IGClasificacion dialog = new IGClasificacion();
					dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
					dialog.setVisible(true);
					dialog.setModal(true);
					dialog.setResizable(false);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}
	
	public IGClasificacion() {
		setModal(true);
		setResizable(false);
		setBounds(100, 100, 540, 240);
		//ID-72
		setTitle(GestorIGInicio.getGestorIGInicio().getTexto(72));
		getContentPane().setLayout(null);
		
		getContentPane().add(getBtnClasifTotal());
		
		getContentPane().add(getSpnElectorAnyo1());
		getContentPane().add(getBtnClasifAnual());
		
		
		getContentPane().add(getSpnElectorAnyo2());
		getContentPane().add(getComboCampeonatos());
		getContentPane().add(getComboCarreras());
		getContentPane().add(getBtnClasifCarrera());
	}
	
	private JButton getBtnClasifTotal(){
		if(btnClasifTotal == null){
			//ID-73
			btnClasifTotal = new JButton(GestorIGInicio.getGestorIGInicio().getTexto(73));
			btnClasifTotal.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseClicked(MouseEvent arg0) {
					setVisible(false);
					JDialog espera = new IGEspera();
					espera.setLocationRelativeTo(null);
					espera.setVisible(true);
					JDialog clasifTotal = new IGClasif(1, 0, 0, 0);
					clasifTotal.setResizable(false);
					clasifTotal.setModal(true);
					clasifTotal.setLocationRelativeTo(null);
					espera.dispose();
			        clasifTotal.setVisible(true);
					setVisible(true);
				}
			});
			btnClasifTotal.setBounds(15, 15, 95, 60);
		}
		return btnClasifTotal;
	}
	
	private JSpinner getSpnElectorAnyo1(){
		if(spnElectorAnyo1 == null){
			spnElectorAnyo1 = new JSpinner();
			spnElectorAnyo1.setModel(new SpinnerNumberModel(1990, null, 2200, 1));
			spnElectorAnyo1.setBounds(145, 15, 65, 20);
		}
		return spnElectorAnyo1;
	}
	private JButton getBtnClasifAnual(){
		if(btnClasifAnual == null){
			//ID-74
			btnClasifAnual = new JButton(GestorIGInicio.getGestorIGInicio().getTexto(74));
			btnClasifAnual.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseClicked(MouseEvent e) {
					setVisible(false);
					JDialog espera = new IGEspera();
					espera.setLocationRelativeTo(null);
					espera.setVisible(true);
					JDialog clasifAnual = new IGClasif(2,(Integer)spnElectorAnyo1.getValue(),0,0);
					clasifAnual.setResizable(false);
					clasifAnual.setModal(true);
					clasifAnual.setLocationRelativeTo(null);
					espera.dispose();
			        clasifAnual.setVisible(true);
					setVisible(true);
				}
			});
			btnClasifAnual.setBounds(145, 45, 95, 60);
		}
		return btnClasifAnual;
	}
	
	private JSpinner getSpnElectorAnyo2(){
		if(spnElectorAnyo2 == null){
			spnElectorAnyo2 = new JSpinner();
			spnElectorAnyo2.addChangeListener(new ChangeListener() {
				public void stateChanged(ChangeEvent arg0) {
					comboCampeonatos.removeAllItems();
					comboCarreras.removeAllItems();
					
					Iterator<Integer> lista = GestorIGClasificacion.getGestorIGClasificacion().getCampeonatos((Integer)spnElectorAnyo2.getValue());
					while(lista.hasNext()) {
						Integer camp = lista.next();
						comboCampeonatos.addItem(camp);
					}
					
					if(comboCampeonatos.getItemCount() != 0){
						comboCampeonatos.setEnabled(true);
					}else{
						comboCampeonatos.setEnabled(false);
						comboCarreras.setEnabled(false);
						btnClasifCarrera.setEnabled(false);
					}
				}
			});
			spnElectorAnyo2.setModel(new SpinnerNumberModel(1990, null, 2200, 1));
			spnElectorAnyo2.setBounds(270, 15, 65, 20);
		}
		return spnElectorAnyo2;
	}
	private JComboBox getComboCampeonatos(){
		if(comboCampeonatos == null){
			comboCampeonatos = new JComboBox();
			comboCampeonatos.setEnabled(false);
			comboCampeonatos.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					
					Iterator<Integer> lista = GestorIGClasificacion.getGestorIGClasificacion().getCarreras((Integer)comboCampeonatos.getSelectedItem(), (Integer)spnElectorAnyo2.getValue());
					comboCarreras.removeAllItems();
					if(lista.hasNext()){
						while(lista.hasNext()) {
							Integer camp = lista.next();
							comboCarreras.addItem(camp);
						}
					}
					
					if(comboCarreras.getItemCount() != 0){
						comboCarreras.setSelectedIndex(0);
						comboCarreras.setEnabled(true);
					}else{
						comboCarreras.setEnabled(false);
						btnClasifCarrera.setEnabled(false);
					}
				}
			});
			comboCampeonatos.setBounds(270, 45, 250, 25);
		}
		return comboCampeonatos;
	}
	private JComboBox getComboCarreras(){
		if(comboCarreras == null){
			comboCarreras = new JComboBox();
			comboCarreras.addActionListener(new ActionListener() {
				public void actionPerformed(ActionEvent arg0) {
					if(comboCarreras.getSelectedIndex() != -1){
						btnClasifCarrera.setEnabled(true);
					}
				}
			});
			comboCarreras.setBounds(270, 90, 250, 25);
			comboCarreras.setEnabled(false);
		}
		return comboCarreras;
	}
	private JButton getBtnClasifCarrera(){
		if(btnClasifCarrera == null){
			//ID-75
			btnClasifCarrera = new JButton(GestorIGInicio.getGestorIGInicio().getTexto(75));
			btnClasifCarrera.setEnabled(false);
			btnClasifCarrera.addMouseListener(new MouseAdapter() {
				@Override
				public void mouseClicked(MouseEvent e) {
					if(btnClasifCarrera.isEnabled()){
						setVisible(false);
						JDialog espera = new IGEspera();
						espera.setLocationRelativeTo(null);
						espera.setVisible(true);
						JDialog clasifCarrera = new IGClasif(0,0,(int)comboCarreras.getSelectedItem(),0);
						clasifCarrera.setResizable(false);
						clasifCarrera.setModal(true);
						clasifCarrera.setLocationRelativeTo(null);
						espera.dispose();
				        clasifCarrera.setVisible(true);
						setVisible(true);
					}
				}
			});
			btnClasifCarrera.setBounds(270, 135, 95, 60);
		}
		return btnClasifCarrera;
	}
}